.\" Manpage for cjdroute.conf
.\"

.TH cjdroute.conf 5 "2014-03-16" "" "Cjdns Reference"

.SH "NAME"
cjdroute.conf \- Cjdns configuration file

.SH "DESCRIPTION"
The
.I cjdroute\&.conf
file configures the cjdns routing engine,
.BR cjdns (8),
generally through
.BR cjdroute (1)\&.
.PP
The configuration is written in a variation of the JSON format that also
accepts traditional C-like comments such as single line comments (//) and
multiline comments (/* and */)\&. Additionally, unused JSON values found in
.I cjdroute\&.conf
are ignored by cjdns and can be used as a form of JSON-compliant comments.

.SH "CONFIGURATION"
\fB"privateKey":\fR "\&.\&.\&."
.RS 4
Your node's private key\&. It should be kept secret because your
confidentiality and data integrity depend on it.
.RE
.PP

\fB"publicKey":\fR "\&.\&.\&."
.RS 4
Your node's public key\&. Based on your private key It is fine for anyone
to know this\&.
.RE
.PP

\fB"ipv6":\fR "\&.\&.\&."
.RS 4
Your node's IPv6 address when it is on the network\&. It is generated
by using the first 16 bytes of a double SHA-512 of your public key\&. All
cjdns IPv6 addresses must begin with "fc" or else they are invalid\&.
.RE
.PP

\fB"authorizedPasswords":\fR [\&.\&.\&.]
.RS 4
An array of passwords that may be used to connect (peer) to your node\&.
.PP
\fI"password":\fR "..."
.RS 4
A password which can be used to peer with your node\&.
.RE
.PP
\fI"user":\fR "..."
.RS 4
A human-readable string that identifies what password a peer is using
on the admin interface\&. If omitted, the password will be identified by its
position within the array (starting from 0)
.RE
.PP
Example:
.br
"authorizedPasswords":
.br
[
    { "password": "AnExamplePassword", "user": "Bob" },
    { "password": "YetAnotherExample", "user": "Alice" },
    { "password": "j3fus4r3gkhv80xdz1yqc0qvn1p91hr", "user": "Eve" }
.br
]
.RE
.PP

\fB"admin":\fR {\&.\&.\&.}
.RS 4
An object which defines where to bind to the admin RPC server as well as the
password for the admin RPC server\&. The two required strings are "bind", which
should be in the format "IP:PORT", and "password", which should preferably be a
long random string of characters.
.RE
.PP

\fB"interfaces":\fR {\&.\&.\&.}
.RS 4
An object that defines which interfaces cjdns will bind to and what peers to
connect to\&. There are two different interfaces, UDPInterface and
ETHInterface, both of which are arrays\&. Within each array there are a variety
of different options
.PP
\fI"bind":\fR "\&.\&.\&."
.RS 4
Defines what the interface should bind to\&. In UDPInterface, the bind is
an IP:PORT string, such as "0\&.0\&.0\&.0:12345", while in ETHInterface the bind
is a network interface, such as "eth0"\&.
.RE
.PP
\fI"beacon":\fR Integer
.RS 4
This option is only found in ETHInterface and defines whether auto-connecting
beacons should be sent or listened to\&. This is useful for a zeroconf local
network\&.
.PP
.RS 4
0 \-\- Disabled\&.
.br
1 \-\- Accept incoming beacons and try connecting to the sender\&.
.br
2 \-\- Accept incoming beacons and broadcast beacons to the local network\&.
.RE
.RE
.PP
\fI"connectTo":\fR {\&.\&.\&.}
.RS 4
Defines which nodes cjdns should connect to with the specified interface\&.
Multiple nodes may be placed in a single "connectTo" as long as each are
seperated by commas\&. If a node happens to be offline or become offline during
runtime, cjdns will attempt to reconnect at regular intervals\&. The one
difference in this option between UDPInterface and ETHInterface is that
UDPInterface connects to an "IP:PORT" while ETHInterface connects to a MAC
address\&.
.PP
UDPInterface Example:
.br
"connectTo":
.br
{
.RS 4
"1\&.2\&.3\&.4:54321":
.br
{
    "login": "login From Your Peer's authorizedPasswords",
    "password": "password From Your Peer's authorizedPasswords",
    "publicKey": "Your Peer's publicKey\&.k"
.br
},
.br
"5\&.6\&.7\&.8:46321":
.br
{
    "login": "cueball",
    "password": "Correct Horse Battery Staple",
    "publicKey": "Other Peer's publicKey\&.k"
.br
}
.RE
}
.RE
.RE
.PP

\fB"router":\fR {\&.\&.\&.}
.RS 4
An object that holds configuration information on the router
.PP
\fI"interface":\fR {\&.\&.\&.}
.RS 4
Defines the type of interface used for connecting to the cjdns network\&.
It requires a "type" string, and optionally a "tunDevice" string\&. The "type"
string defines the type of interface used, however only "TUNInterface" is
supported at the moment\&. The "tunDevice" string defines the name of a
persistent TUN device to use, which is helpful for starting cjdroute as its own
user instead of root\&.
.RE
.PP
\fI"ipTunnel":\fR {\&.\&.\&.}
.RS 4
A system for tunneling ICANN IPv4 and ICANN IPv6 through cjdns\&. This is using
the cjdns switch layer as a VPN carrier\&.
.PP
\fBNOTE:\fR Simply editing your configuration file is not sufficient to
setting up an ipTunnel gateway\&. Please read through tunnel/README.md in the
cjdns git tree for more information
.PP
\fI"allowedConnections":\fR [\&.\&.\&.]
.RS 4
Nodes allowed to connect to us, specified by their public key, and what IP
address(es) to give them\&. It is fine to only specify one address\&.
.PP
Example:
.PP
"allowedConnections":
.br
[
.br
    {
        "publicKey": "f64hfl7c4uxt6krmhPutTheRealAddressOfANodeHere7kfm5m0.k",
        "ip4Address": "192.168.1.24",
        "ip4Prefix": 24,
        "ip6Address": "2001:123:ab::10",
        "ip6Prefix": 0
.br
    },
.br
    {
        "publicKey": "ydq8csdk8p8ThisIsJustAnExampleAddresstxuyqdf27hvn2z0.k",
        "ip4Address": "192.168.1.25",
        "ip4Prefix": 24
.br
    }
.br
]
.RE
.PP
\fI"outgoingConnections":\fR [\&.\&.\&.]
.RS 4
An array of nodes to connect and ask for IP addresses.
.PP
Example:
.PP
"outgoingConnections":
.br
[
    "6743gf5tw80ExampleExampleExampleExamplevlyb23zfnuzv0.k",
    "pw9tfmr8pcrExampleExampleExampleExample8rhg1pgwpwf80.k",
    "g91lxyxhq0kExampleExampleExampleExample6t0mknuhw75l0.k"
.br
]

.RE
.RE
.RE
.PP

\fB"security":\fR [\&.\&.\&.]
.RS 4
An array that defines what user to change to after startup and whether to
exempt the Angel process from this user change\&.
.PP
\fI"setuser":\fR "username"
.RS 4
User to switch to after startup, for security purposes\&. Default value is
"nobody"\&.
.PP
.RE
\fI"exemptAngel":\fR Integer
.RS 4
Whether or not to exempt the Angel process from the user change\&. The Angel is
a small isolated piece of code which exists outside of the core's strict
sandbox but does not handle network traffic\&. This option must be enabled for
ipTunnel to automatically set IP addresses for the TUN device\&.
.PP
0 \-\- False
.br
1 \-\- True
.RE
.RE
.PP

\fB"logging":\fR {\&.\&.\&.}
.RS 4
Add or uncomment "logTo":"stdout" to have cjdns log to stdout rather than
making logs available via the admin socket
.RE
.PP

\fB"noBackground":\fR Integer
.RS 4
If set to a non-zero value, cjdns will not fork to the background\&.
Recommended for use in conjunction with "logTo":"stdout"\&.
.RE
.PP
\fB"dns":\fR {\&.\&.\&.}
.RS 4
This section is used to configure the dns capabilities being added to cjdns\&.
Unfortunetly, there is no documentation for this DNS section at this time\&.
.PP
\fI"keys":\fR [\&.\&.\&.]
.RS 4
.RE
.PP
\fI"servers":\fR [\&.\&.\&.]
.RS 4
.RE
.PP
\fI"MinSignatures":\fR Integer
.RS 4
.RE
.RE


.SH "FILES"
.BI /etc/cjdroute.conf
.RS 4
A common location for the configuration file\&.
.RE

.SH "SEE ALSO"
.BR cjdroute (1),
.BR cjdns (8)
